/****************  接口 *************************/

/****** 接口对象（最重要 也是用的最多的） *******/

interface State {
	url: string
	title: string
	price: number
	readonly id: number
	desc?: string
}

const arr: State[] = [{
	url: '123',
	title: '12313',
	price: 1231,
	id: 1
}, {
	url: '123',
	title: '12313',
	price: 1231,
	id: 1
},{
	url: '123',
	title: '12313',
	price: 1231,
	id: 1
}]


arr.forEach(v => {
	v.id
	v.title
})


// const o: State = {
// 	url: '1231',
// 	title: '哈哈',
// 	price: 123,
// 	id: 1,
// 	desc: '1231231231'
// }

/****** 可索引的类型 数组 *******/

// 推荐
// const arr: number[] = [1, 2, 3, 4, 5]

// const arr1: Array<number> = [1, 2, 3, 4, 5]

// interface Arr2State {
// 	[propName: number]: string
// }

// const arr2: Arr2State = ['123', '231', '231', '12321']


/****** 类 类型  *******/

// interface AnimalState {
// 	nickname: string
// 	sex: string
// 	age: number
// }

// // 类 实现 接口
// class Animal implements AnimalState {
// 	nickname: string
// 	sex: string = '男'
// 	age: number = 1
// 	constructor(nickname: string) {
// 		this.nickname = nickname
// 	}
// }


/******* 继承接口 *********/ 
// interface Person {
// 	name: string
// 	age: number
// }

// interface Man extends Person {
// 	sex: '男'
// }
// interface Women extends Person {
// 	sex: '女'
// }

// const o: Man =  {
// 	sex: '男',
// 	name: '张三',
// 	age: 16
// }

// const o1: Women = {
// 	sex: '女',
// 	name: '张三',
// 	age: 16
// }
